<?php
// +----------------------------------------------------------------------
// | RXThinkCMF框架 [ RXThinkCMF ]
// +----------------------------------------------------------------------
// | 版权所有 2017~2020 南京RXThinkCMF研发中心
// +----------------------------------------------------------------------
// | 官方网站: http://www.rxthink.cn
// +----------------------------------------------------------------------
// | Author: 牧羊人 <1175401194@qq.com>
// +----------------------------------------------------------------------

namespace app\admin\widget;


use think\template\TagLib;
use think\View;

class Checkbox extends TagLib
{
    // 自定义标签列表
    protected $tags = [
        'select' => ['attr' => 'name', 'close' => 0],
    ];

    /**
     * 复选框组件
     * @param $tag 标签参数
     * @return string
     * @author 牧羊人
     * @since 2020/7/3
     */
    public function tagSelect($tag)
    {
        // 标签参数
        $param = $tag['param'];
        $item = explode('|', $param);
        // 组件名称
        $name = strpos(trim($item[0]), "$") !== false ? ("{" . trim($item[0]) . "}") : trim($item[0]);
        $showName = trim($item[1]);
        $showValue = trim($item[2]);

        // 数据源
        $data = $tag['data'];
        // 已选中值
        $value = $tag['value'];

        // 根据使用场景动态解析
        if (strpos($data, ",") !== false) {
            $list = explode(",", $data);
            $itemList = [];
            if ($list) {
                foreach ($list as $k => $v) {
                    $subItem = explode("=", $v);
                    $itemList[$subItem[0]] = $subItem[1];
                }
            }
            // 创建组件内容
            $parse = "";
            foreach ($itemList as $key => $val) {
                $parse .= '<input name="' . $name . '[' . $key . ']" lay-skin="primary" title="' . $val . '" <?php echo in_array(' . $key . ', explode(\',\', ' . $value . ')) ? "checked=\"\"" : null;?> type="checkbox">';
            }
            return $parse;
        } else {
            $parse = '<?php ';
            $parse .= 'foreach(' . $data . ' as $key => $val){';
            $parse .= '?>';
            $parse .= '<?php if(is_array($val)) {?>';
            $parse .= '<input name="' . $name . '[{$val["' . $showValue . '"]}]" lay-skin="primary" title="{$val["' . $showName . '"]}" <?php echo in_array($val["' . $showValue . '"], explode(\',\', ' . $value . ')) ? "checked=\"\"" : null;?> type="checkbox">';
            $parse .= '<?php } else { ?>';
            $parse .= '<input name="' . $name . '[{$key}]" lay-skin="primary" title="{$val}" <?php echo in_array($key, explode(\',\', ' . $value . ')) ? "checked=\"\"" : null;?> type="checkbox">';
            $parse .= '<?php } ?>';
            $parse .= '<?php } ?>';
            return $parse;
        }
    }
}